//1380. 矩阵中的幸运数
//给你一个 m * n 的矩阵，矩阵中的数字 各不相同 。请你按 任意 顺序返回矩阵中的所有幸运数。
//
//幸运数是指矩阵中满足同时下列两个条件的元素：
//
//在同一行的所有元素中最小
//在同一列的所有元素中最大
//
//来源：力扣（LeetCode）
//链接：https://leetcode-cn.com/problems/lucky-numbers-in-a-matrix

package lucky_numbers_in_a_matrix

// minRow 获取一行中最小元素
func minRow(matrix [][]int, row int) int {
	res := matrix[row][0]
	for _, v := range matrix[row] {
		if res > v {
			res = v
		}
	}
	return res
}

// maxCol 获取一列中最大元素
func maxCol(matrix [][]int, col int) int {
	res := matrix[0][col]
	for i := range matrix {
		if res < matrix[i][col] {
			res = matrix[i][col]
		}
	}
	return res
}

func luckyNumbers(matrix [][]int) (res []int) {
	for i, row := range matrix {
		for j, v := range row {
			max := maxCol(matrix, j)
			min := minRow(matrix, i)
			if v == max && v == min {
				res = append(res, v)
			}
		}
	}

	return
}
